Keycloak Nedir? Spring Boot Entegrasyonu ve Auth0 Karşılaştırması (2026)

İngilizce'ye Geç

Keycloak, açık kaynaklı bir Identity and Access Management (IAM) çözümüdür. Kullanıcı kimlik doğrulama, yetkilendirme ve Single Sign-On (SSO) gibi güvenlik işlemlerini merkezi bir yapıda yönetmenizi sağlar.

Keycloak nedir, ne işe yarar? Spring Boot ile nasıl entegre edilir? Auth0 ve Okta'dan farkı nedir? Bu rehberde Keycloak'ı sıfırdan kurulumdan Spring Boot entegrasyonuna kadar adım adım anlatıyoruz.

Hızlı özet: Keycloak tamamen ücretsiz ve açık kaynaklıdır. OAuth2, OpenID Connect ve SAML 2.0 destekler. Kendi sunucunuzda çalıştırabilir, Spring Boot ile dakikalar içinde entegre edebilirsiniz.

Keycloak Nedir?

Keycloak, Red Hat tarafından geliştirilen ve açık kaynak olarak sunulan bir Identity and Access Management (IAM) platformudur. Uygulamalarınıza kullanıcı girişi, yetkilendirme ve SSO (Single Sign-On) eklemek için kullanılır.

Kendi sunucunuzda (self-hosted) çalıştırabilirsiniz — bu da Auth0 veya Okta gibi bulut tabanlı çözümlere göre en büyük avantajıdır. Verileriniz tamamen sizin kontrolünüzde kalır.

  • OAuth 2.0 ve OpenID Connect (OIDC) desteği
  • SAML 2.0 entegrasyonu
  • Single Sign-On (SSO) — bir kez giriş, tüm uygulamalara erişim
  • LDAP ve Active Directory bağlantısı
  • Sosyal login (Google, GitHub, Facebook)
  • Çok faktörlü kimlik doğrulama (MFA)
  • Kullanıcı yönetimi ve rol tabanlı erişim kontrolü (RBAC)

Keycloak Ne İşe Yarar?

Bir uygulamaya kullanıcı girişi eklemek istediğinizde iki seçenek vardır: kendi kimlik doğrulama sisteminizi sıfırdan yazmak ya da Keycloak gibi hazır bir IAM çözümü kullanmak.

Kendi sisteminizi yazmak şifre hashing, token yönetimi, oturum güvenliği, brute force koruması gibi onlarca detayı kapsar. Keycloak bunların hepsini sizin yerinize halleder.

  • Mikroservis mimarisi: Her servis ayrı ayrı authentication yazmak yerine Keycloak'a yönlendirir.
  • Kurumsal uygulamalar: LDAP/AD ile mevcut kullanıcı dizinine bağlanır.
  • Çoklu uygulama: SSO ile kullanıcı bir kez giriş yapıp tüm uygulamalara erişir.
  • API güvenliği: JWT tabanlı token üretir, her servis token'ı doğrular.
Ne zaman Keycloak kullanmalısınız? Birden fazla uygulama veya servis varsa, LDAP/AD entegrasyonu gerekiyorsa ya da SSO ihtiyacı varsa Keycloak ideal çözümdür. Tek uygulamalı basit projeler için Spring Security yeterli olabilir.

Keycloak Kurulum Adımları

Keycloak'ı Docker ile çalıştırmak en hızlı yoldur:

docker run -p 8080:8080 \
  -e KEYCLOAK_ADMIN=admin \
  -e KEYCLOAK_ADMIN_PASSWORD=admin \
  quay.io/keycloak/keycloak:24.0.0 start-dev

Tarayıcıdan http://localhost:8080 adresine gidin. Admin konsoluna admin / admin ile giriş yapın.

Realm ve Client Oluşturma

  1. Realm oluşturun: Sol üstteki "master" dropdown → "Create Realm" → isim verin (örn. myrealm)
  2. Client ekleyin: Clients → Create client → Client ID: spring-app → Client authentication: ON
  3. Client secret alın: Credentials sekmesinden secret'ı kopyalayın
  4. Kullanıcı oluşturun: Users → Add user → şifre belirleyin
  5. Rol atayın: Roles → Create role → kullanıcıya atayın

Spring Boot ile Keycloak Entegrasyonu (2026)

Spring Boot 3.x ile birlikte eski keycloak-spring-boot-starter adapter'ı resmi olarak kaldırıldı. Artık standart Spring Security OAuth2 Resource Server kullanılması önerilir.

Dikkat: İnternette gördüğünüz KeycloakWebSecurityConfigurerAdapter tabanlı örnekler Spring Boot 2.x içindir. Spring Boot 3.x ile çalışmaz.

1. Maven Dependency

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>

2. application.yml

spring:
  security:
    oauth2:
      resourceserver:
        jwt:
          issuer-uri: http://localhost:8080/realms/myrealm

3. Security Config

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/public/**").permitAll()
                .anyRequest().authenticated()
            )
            .oauth2ResourceServer(oauth2 -> oauth2
                .jwt(Customizer.withDefaults())
            );
        return http.build();
    }
}

4. Token Testi

Keycloak'tan token almak için:

curl -X POST http://localhost:8080/realms/myrealm/protocol/openid-connect/token \
  -d "grant_type=password" \
  -d "client_id=spring-app" \
  -d "client_secret=YOUR_SECRET" \
  -d "username=testuser" \
  -d "password=testpass"

Dönen access_token'ı API isteklerinde kullanın:

curl http://localhost:8081/api/hello \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIs..."

Keycloak vs Auth0 vs Okta

  • Lisans: Keycloak açık kaynak ve ücretsiz. Auth0 freemium (sınırlı ücretsiz plan). Okta ücretli.
  • Self-hosting: Keycloak kendi sunucunuzda çalışır. Auth0 ve Okta bulut tabanlıdır.
  • SSO: Üçü de destekler.
  • LDAP/AD: Keycloak native destek sunar. Auth0 sınırlı, Okta tam destek.
  • Özelleştirme: Keycloak çok yüksek — login sayfası, flow, tema tamamen değiştirilebilir. Auth0 ve Okta orta düzeyde.
  • Yönetim kolaylığı: Auth0 ve Okta daha kolay — Keycloak kurulum ve bakım gerektirir.
  • Ölçeklenebilirlik: Keycloak kendi altyapınıza bağlı. Auth0 ve Okta bulut ölçeğinde çalışır.
Hangisini seçmeli? Bütçe kısıtı varsa, veri gizliliği önemliyse veya kurumsal LDAP entegrasyonu gerekiyorsa → Keycloak. Hızlı entegrasyon ve managed servis istiyorsanız → Auth0. Kurumsal SaaS ekosistemi için → Okta.

Mikroservislerde Keycloak Kullanımı

Mikroservis mimarisinde her servisin ayrı authentication yapması hem tekrar hem de güvenlik riski yaratır. Keycloak merkezi bir auth sunucusu olarak tüm servislerin güvenliğini tek noktadan yönetir.

  • Kullanıcı Keycloak'a giriş yapar, JWT token alır.
  • Her mikroservise istekte token gönderilir.
  • Her servis token'ı Keycloak'ın public key'i ile bağımsız olarak doğrular — Keycloak'a tekrar istek atmaz.
  • Token içindeki roller ile her servis kendi yetkilendirmesini yapar.

Bu yapı hem performanslıdır (her doğrulama için merkezi sunucuya gidilmez) hem de ölçeklenebilirdir.

Sık Sorulan Sorular

Keycloak nedir kısaca?

Keycloak, uygulamalarınıza kullanıcı girişi, yetkilendirme ve SSO eklemek için kullanılan açık kaynaklı bir IAM (Identity and Access Management) platformudur. Red Hat tarafından geliştirilir ve ücretsizdir.

Keycloak ücretsiz mi?

Evet. Keycloak tamamen açık kaynak ve ücretsizdir. Apache 2.0 lisansı altında dağıtılır. Kendi sunucunuzda sınırsız kullanabilirsiniz.

Keycloak vs Auth0 farkı nedir?

Keycloak self-hosted ve ücretsizdir — verileriniz sizin sunucunuzda kalır. Auth0 bulut tabanlı ve ücretlidir, kurulumu daha kolaydır ama veri kontrolü azalır. Bütçe kısıtı veya veri gizliliği önceliği varsa Keycloak, hızlı managed servis için Auth0.

Keycloak mikroservislerde neden kullanılır?

Her mikroservisin kendi authentication sistemini yazması yerine Keycloak merkezi bir auth sunucusu görevi görür. JWT tabanlı token yapısı sayesinde her servis token'ı bağımsız doğrulayabilir, performans kaybı yaşanmaz.

Spring Boot 3.x ile eski Keycloak adapter çalışır mı?

Hayır. keycloak-spring-boot-starter ve KeycloakWebSecurityConfigurerAdapter Spring Boot 3.x ile uyumlu değildir. Spring Boot 3.x'te spring-boot-starter-oauth2-resource-server kullanılması gerekir.

Keycloak ile sosyal login (Google, GitHub) eklenebilir mi?

Evet. Keycloak admin konsolundan Identity Providers bölümüne girip Google, GitHub, Facebook gibi sağlayıcıları birkaç adımda ekleyebilirsiniz. Uygulamanızda herhangi bir değişiklik gerekmez.

Sonuç

Keycloak, özellikle mikroservis mimarisi ve kurumsal uygulamalar için güçlü ve ücretsiz bir IAM çözümüdür. OAuth2, OpenID Connect ve SAML desteği, LDAP entegrasyonu ve SSO yapısıyla modern güvenlik gereksinimlerini karşılar.

Spring Boot 3.x entegrasyonu için artık standart OAuth2 Resource Server yapısı kullanılmaktadır — eski adapter tabanlı örneklere dikkat edin.

Token yapısını daha detaylı öğrenmek için JWT Nedir? ve Token Nedir? içeriklerine de göz atabilirsiniz.

Etiketler: keycloak nedir keycloak spring boot iam nedir oauth2 openid connect sso nedir keycloak vs auth0

Son Güncelleme: 2026

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Güncel yazılım teknolojilerinin takip edildiği blog.

Devops ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *